home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / lib / python2.5 / functools.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-29  |  2KB  |  42 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.5)
  3.  
  4. '''functools.py - Tools for working with functions and callable objects
  5. '''
  6. from _functools import partial
  7. WRAPPER_ASSIGNMENTS = ('__module__', '__name__', '__doc__')
  8. WRAPPER_UPDATES = ('__dict__',)
  9.  
  10. def update_wrapper(wrapper, wrapped, assigned = WRAPPER_ASSIGNMENTS, updated = WRAPPER_UPDATES):
  11.     '''Update a wrapper function to look like the wrapped function
  12.  
  13.        wrapper is the function to be updated
  14.        wrapped is the original function
  15.        assigned is a tuple naming the attributes assigned directly
  16.        from the wrapped function to the wrapper function (defaults to
  17.        functools.WRAPPER_ASSIGNMENTS)
  18.        updated is a tuple naming the attributes off the wrapper that
  19.        are updated with the corresponding attribute from the wrapped
  20.        function (defaults to functools.WRAPPER_UPDATES)
  21.     '''
  22.     for attr in assigned:
  23.         setattr(wrapper, attr, getattr(wrapped, attr))
  24.     
  25.     for attr in updated:
  26.         getattr(wrapper, attr).update(getattr(wrapped, attr, { }))
  27.     
  28.     return wrapper
  29.  
  30.  
  31. def wraps(wrapped, assigned = WRAPPER_ASSIGNMENTS, updated = WRAPPER_UPDATES):
  32.     '''Decorator factory to apply update_wrapper() to a wrapper function
  33.  
  34.        Returns a decorator that invokes update_wrapper() with the decorated
  35.        function as the wrapper argument and the arguments to wraps() as the
  36.        remaining arguments. Default arguments are as for update_wrapper().
  37.        This is a convenience function to simplify applying partial() to
  38.        update_wrapper().
  39.     '''
  40.     return partial(update_wrapper, wrapped = wrapped, assigned = assigned, updated = updated)
  41.  
  42.